Ball.js : class Ball{ constructor (){ this.r=10; this.reset(); } update (playerScore, aiscore) { // if it hits the top or bottom change direction if (this.y height - this.r) { this.ySpeed = -this.ySpeed; } // if it goes to the end of the sreen restart the game if (this.x < this.r){ aiScore.increment (); this.reset(); }else if (this.x>width+this.r){ playerScore.increment (); this.reset(); } this.x+=this.xspeed; this.y+= this.ySpeed; } reset() { this.x=width/2; this.y=height/2; this.xSpeed=random (3, 4); // determines it it's going left or right let isLeft=random (1) > .5; if (isLeft) { this.xSpeed=-this.xSpeed; } this.ySpeed=random(-3, 3); } display() { ellipse(this.x, this.y, this.r *2, this.r *2); } hasHitPlayer(player) { if (this.x-this.r <=player.x + player.width && this.x> player.x) { if (this.isSameHeight (player)) { this.xSpeed= -this.xSpeed; } } } hasHitAi(ai) { if (this.x + this.r >= ai.x && this.x <= ai.x + ai.widthh){ if (this.isSameHeight (ai)) { this.xSpeed = -this.xSpeed; } } } isSameHeight (player){ return this.y >= player.y && this.y <= player.y + player.height; } } Paddle.js: class Paddle{ //La paraula class defineix un tipus d'objecte, en aquest cas u rectangleque ha de ser allargat de dalt // La paraula constructor es obligatoria construex un objecte i si que poso entre parentesis és el que pot variar. Aquestes variables son caracteristiques físiques com la posició x d l'onjecte, la posició y de l'objecte, l'alçada de l'onjecte, l'amplada de l'objecte. constructor(x) { this.x = x; this.y = height / 2-40; this.height = 80; this.width = 20; this.isUp = false; //Per defecte l'objecte no pujarà perqué el codi que fa que puji està en fals que fa que no es compleixi, el mateix podem per isDown. this.isDown = false; //isDown significa que va cap abaix i té un valor false, auquest valor false es un valor booleà. Un valor booleà pot ser veritable o fals i va ser invenat per un filósof i matemàtic (Boole) que s'estudia a la assignatura de filòsofia de primer de batxillerat en l'apartat de lógica i s'estudia a la assignatura de tecnologia industrial per a electrónica on hi han circuits que son 1 i 0 (true i false), també s'estudia en la assignatura de programació i a matemàtiques es diu algebra booleana i només treballa amb el 0 i amb el 1. Diem que isDown es false d'entrada perquè no es mogui al principi sense cap acció de l'usuari, després posarem un codi que farà que quan apretem una fletxa cap avall es torni true. } //update és una funció que actualitza la pàgina de forma que si this.isup es false no fa res per defecte i si és true update () { if (this.isUp) { //si el this up el tornem true fem que thisUp es compleixi utilitzant l'Up que sigifica pujar i utilitza y-- this.up () ; } else if (this.isDown) { //Si es transforma en true s'aplicarà this.down(); } } Score.js : class Score { constructor(x) { this.x = x; this.score = 0; } display() { textSize(50); textAlign(CENTER); text (this.score, this.x, 60); } increment() { this.score++; } }